typedef struct _list LIST;

struct _list {
  LIST    *next;
  LIST    *tail;
  const char  *string;
} ;



typedef struct _lol LOL;

# define LOL_MAX 9

struct _lol {
  int count;
  LIST  *list[ LOL_MAX ];
} ;

LIST *  list_append( LIST *l, LIST *nl );
LIST *  list_copy( LIST *l, LIST  *nl );
void  list_free( LIST *head );
LIST *  list_new( LIST *head, const char *string, int copy );
void  list_print( LIST *l );
int list_length( LIST *l );
LIST *  list_sublist( LIST *l, int start, int count );

# define list_next( l ) ((l)->next)

# define L0 ((LIST *)0)

void  lol_add( LOL *lol, LIST *l );
void  lol_init( LOL *lol );
void  lol_free( LOL *lol );
LIST *  lol_get( LOL *lol, int i );
void  lol_print( LOL *lol );

void donelist( void );

